package Sms

type SmsAdapterInterface interface {
	SendSms(mobile string) (bool, error)
	VerifySms(mobile, smsCode string) (bool, error)
}

type SmsAdapter struct {
	SmsInterface
}

func NewAdapter(adapter SmsInterface) SmsAdapterInterface {
	return &SmsAdapter{
		SmsInterface: adapter,
	}
}

// SendSms 发送短信
// 这里做的逻辑：
// 1、生成短信验证码
// 2、发送短信
// 3：保存短信到session或缓存(redis)
// 4：有效期内重新发送，提示不能频繁发送
func (a *SmsAdapter) SendSms(mobile string) (bool, error) {
	smsCode := "8432"
	return a.Send(mobile, smsCode)
}

// VerifySms 校验短信验证码
// 1、校验成功，则删除session或缓存中保存的短信验证码
// 2、校验失败，返回错误信息
func (a *SmsAdapter) VerifySms(mobile, smsCode string) (bool, error) {
	//return a.Verify(mobile, smsCode), nil
	return true, nil
}
